\documentclass[a4paper]{report}
\usepackage{graphicx}
\usepackage[francais]{babel}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}

\usepackage{alltt}

     \textwidth 16cm
      \textheight 25cm
      \headsep 1.5cm
      \topmargin -2cm
\oddsidemargin 0cm

\title{cartographie 3D} 
\date{}
\author{Mapplestore}
\newcommand{\HRule}{\rule{\linewidth}{0.5mm}}

\begin{document}
\begin{titlepage}
\begin{center}



\textsc{\LARGE Mapplestore}\\[1.5cm]

\textsc{\Large Cartomentiens}\\[0.5cm]

\includegraphics[scale = 0.6]{name.jpg}\\  

% Title
\HRule \\[0.4cm]
{ \huge \bfseries Rapport de Soutenance de soutenance finale}\\[0.4cm]

\HRule \\[1.5cm]

% Author and supervisor
\begin{minipage}{0.4\textwidth}
\begin{flushleft} \large

Benjamin\textit{"Oni"} \textsc{Richard}\\
Quentin  \textit{"Hormelis"} \textsc{Leprael}

\end{flushleft}
\end{minipage}
\begin{minipage}{0.4\textwidth}
\begin{flushright} \large
Maxime \textit{"Heliwood"} \textsc{Templé}\\
Mathieu \textit{"Arkon"} \textsc{Maillos}

\end{flushright}
\end{minipage}

\vfill

% Bottom of the page
{\large 12 décembre 2011}

\end{center}

\end{titlepage}

\tableofcontents

\chapter{Introduction}
Nous allons, dans la suite de ce rapport de soutenance, vous présenter en détail le projet. \textit{MappleStore}, que nous avons développé pendant les trois derniers mois. Ce dernier est un logiciel de cartographie 3D, c'est à  dire, un programme capable de décoder une carte fournie par l'utilisateur et, aprés traitement, l'afficher dans un monde en trois dimensions. Nous pouvons même nous déplacer dans ce monde virtuel ! 
	\newpage
	\section{Présentation du groupe}

Le projet a été conçu et réalisé par l'équipe \textit{les cartomanciens}. Le groupe est composé de quatre étudiants de Spé à EPITA. Tous trois issus de la classe Sup C1 l'année précédente, nous nous sommes arrangé pour nous former assez tot et donc, diviser le travail le plus rapidement possible. Le fait que nous nous connaissions bien nous a permi de connaître les qualités de chacun afin de bien partager le travail efficacement tout en prenant en compte les compétences des différents membres.
\\
\\
\\
\begin{center}
\includegraphics[scale = 1.5]{team.jpg}

\textit{Dans l'ordre d'apparition: Maxime, Quentin, Mathieu, et Benjamin, notre chef de projet}
\end{center}

\newpage
	\section{Répartition des taches}
Chaque personne a été désigné pour réaliser une partie différente du projet, afin de l'assembler en un programme commun pour la dernière soutenance.Toutes les parties dont nous ferons allusion seront expliquées en détail dans les chapitres suivants. Tout d'abord, Quentin s'est occupé de la mise en place du pré-traitement de l'image. Benjamin s'est attelé à  la réalisation du moteur graphique 3D, qui permettra d'afficher la carte finale à  l'aide des données récupérées par le travail de Quentin. L'interface graphique a été réalisé par Mathieu et Maxime. Ce dernier s'occupant en premier lieu de de tout ce qui ne s'appliquait pas directement au logiciel , c'est à dire le site web, les rapports et les modes d'emploi. Mathieu s'est directement plongé dans l'interface et s'est vite confronté à SDL et LablGTK.


\includegraphics[scale = 1	]{comingsoon.png}


 
\newpage
	\section{Chronologie du projet}

Nous avions décider dès le départ que le projet serait terminer en avance par rapport aux dates conseillées, afin de nous donner du temps pour optimiser et améliorer un maximum notre projet. Pour cela nous avons compris qu'il serait préférable pour nous que chacun travaille de son coté sur sa partie et qu'à  partir de la fin de la première soutenance, nous soyons capable de fournir un logiciel complet en parfait état de fonctionnement. Malgrès quelques erreurs et problèmes extérieurs qui nous ont obligés de ralentir sensiblement la cadence de notre travail, nous avons réussi à respecter notre calendrier.


	\section{Partage de nos fichiers}

Afin que tout le monde ai tous les fichiers du projet à portée de main, nous avons, comme l'année derniere, utilisé SVN. Nous utilisons le Google Code, Project Hosting de Google. Dessus, nous, "uploadons" régulierement nos travaux. Cela nous permet à tous d'etre au courant des avancées des autres et donc d'etre tout le temps sur la meme version du projet. 

\newpage
\chapter{Soutenance précédente}

Nous allons maintenant vous expliquer ce qui a été fait lors de la soutenance précédente, en détail, afin que vous compreniez et que vous ayez une idée claire du travail effectué depuis la derniere soutenance. 

\newpage

	\section{Pré-traitement de l'image}
\newpage
	
	\section{Moteur 3D}

Cette premiére soutenance a permis à Benjamin de mettre en place une  ébauche de moteur 3D, capable à  partir d'un ficher .obl, de matérialiser un objet en trois dimensions avec , ou sans rotation, selon le désir de l'utilisateur. Nous avions aussi la possibilité de modifier l'affichage de la carte, en mode plein ou en mode filaire, en pressant une simple touche.\\
Il a fallu pour cela comprendre le fonctionnement d'un fichier .obj. Ce dernier permet de recenser les points de l'objet à  partir de leur coordonnées, et donc les surfaces de l'objet à   partir d'un triplet de points
\newpage

	\section{Interface graphique}
Lors de la premiere soutenance, nous avons principalement étudié les differents moyens de réaliser une interface qui soit a la fois performante et facile d'accès à l'utilisateur. Pour cela nous avons décidé, après plusieurs tentatives, d'utiliser la bibliotheque SDL, qui nous permettait d'accéder directement à un certain nombre de fonctionnalités, sans avoir à tout recoder de zéro.\\
Le  plus gros travail a été de comprendre ces bibliothéques, son fonctionnement et comment les utiliser pour les relier au projet. On est très loin de tout ce que nous avions pu faire auparavent en terme de code. LablGTK est totalement nouveau pour nous, malgrès une documentation très succinte, nous nous sommes mutuellement aidés pour arriver à une première ébauche d'interface pour la premiere soutenance. 

\begin{center}
\includegraphics[scale = 0.7]{interface1.jpg}
\textit{Premiere interface graphique}
\end{center}

\begin{center}

\includegraphics[scale = 0.6]{SDL.png}
\textit{Logo de la bibliotheque}
\end{center}
Plus en détail, nous avions une interface possédant quelques boutons. Parmi ces boutons se trouvait un bouton permettant d'ouvrir une image au centre de l'interface ainsi que des boutons pour les fonctions de type filtre à utiliser par la suite. Nous avions là quelque chose de très simple, en partie fonctionnel, qui nous a servi de base pour la suite. Cela nous a permi d'avoir une premiere approche avec labLGTK et d'avoir une vision claire de la bibliothéque, cette derniere étant peu mise à jour et peu utilisée. 

\begin{center}
\includegraphics[scale = 0.6]{interface1.jpg}
\textit{Première interface graphique}
\end{center}

\chapter{Le projet final}
Cette partie vous expliquera de façon succincte, l'état d'avancement de notre projet lors de la première soutenance, qui a eu lieu fin octobre. Dans les prochaines pages vous verrez en détail le pré-traitement de l'image. Puis on étudierons le moteur 3D en détail avec tout ce qu'il contient et toutes ses capacités. Par la suite nous verron l'interface graphique avec ses différents boutons et modes de fonctionnement. Enfin, nous vous expliquerons comment nous avons assembler le projet. 
\newpage


	\section{Pré-traitement de l'image}
	
	\newpage

	\section{Moteur 3D}
	
\includegraphics[scale = 0.6]{1.png}

\newpage

\includegraphics[scale = 0.6]{2.png}

\newpage
\includegraphics[scale = 0.6]{3.png}

	\newpage

	\section{Interface graphique}
Pour cette derniere soutenance, le principe de base aura été de repartir à zéro. Nous avons utilisé nos connaissances acquises dans nos recherches pour réaliser une interface qui correspondait beaucoup plus aux attentes du cahier des charges. Bien que les methodes employées pour la plupart des parties restent fondamentalement les memes, nous avons surtout ajouter des actions plus spécifiques, permettant ainsi une meilleure interconnection entre les différentes parties du projet.


L'interface peut être divisée en quatre grande partie que nous allons détailler maintenant.

\begin{center}\begin{center}
\includegraphics[scale = 0.7]{interface1.jpg}
\textit{Premiere interface graphique}
\end{center}

\includegraphics[scale= 0.5]{capp.png}
\textit{seconde et derniere interface graphique}
\end{center}

\newpage


	\subsection{Les boutons du haut}
	
	En haut de l'interface, de notre fenetre, nous avons plusieurs boutons. Le premier bouton est un bouton qui permet de choisir un fichier quelque part dans l'ordinateur et de l'afficher ensuite au centre de l'interface. Ce bouton nous a demandé beaucoup de travail car il a vraiment fallu qu'on comprenne l'essence de GTK pour parvenir à le coder. Il utilise divers "objets", divers notions spécifiques à la bibliothéque. Au début, un problème qui nous a hanté durant plusieurs jours a été que lorsque nous devions ajouter une deuxieme image par dessus une premiere, notre code décalait notre premiere image pour afficher la deuxieme dans l'autre moitié de l'interface. C'était très étrange. Nous avons chercher une solution à ce problème et nous avons creuser plusieurs pistes. La premiere étant de nettoyer la "box" où apparaissait la premiere image pour faire apparaitre la deuxieme. Le fait est que cette fonction n'existait pas. Puis nous avons pensé à supprimer cette box avec l'image à l'intérieur avant de les reconstruire avec une nouvelle image. Nous ne sommes pas allé très loin dans cette voie car cela allait rendre le code beaucoup trop lourd et très peu optimisé. Nous avons dit "non". Enfin, la solution qui a été retenue a été de simplement ré-appeler la fonction d'affichage et de changer le nom de l'image affichée pour la remplacer par une autre grace à une méthode trouvée dans la documentation de la bibliothéque. Ces lignes de code ont été difficiles à trouver mais nous y sommes finalement parvenu en combinant nos efforts. 
\\

Le bouton Editer est très pratique car il permet, une fois qu'on a choisi un plan et qu'il est affiché dans la box principale d'ouvrir le menu des couleurs que nous vous détaillerons par la suite.
\\

Le bouton qui vient ensuite est le bouton Aide. Nous avons pensé qu'il serait important de mettre un bouton d'aide dans notre interface sophistiquée afin de ne pas effrayer l'utilisateur par cette derniere. Ce bouton cliquable renseigne l'utilisateur sur les différentes fonctions de l'interface. Il est très pratique pour le nouvel utilisateur. 
\\

Pour continuer, nous avons mis un bouton "A propos" afin de renseigner les utilisateurs de qui sont les développeurs de ce projet. Il nous permet de nous mettre en valeur et c'est tout à notre honneur. Nous avons laissé des informations permettant de remonter jusqu'à nous si la personne ayant cliqué sur bouton en a besoin. 
\\

Enfin, nous avons insérer un bouton pour quitter purement et simplement l'interface. Ceci dans le but de rendre la fermeture du programme plus facile. Il est important de pouvoir revenir à son bureau une fois l'utilisation du programme effectuée afin de pouvoir continuer ses activités. 


	\subsection{La box de visualisation}
	
Cette box se site en plein milieu de l'interface, légérement sur la gauche. C'est ici qu'apparait les images modifiées par les filtres avant le traitement pour la modélisation 3D. On y applique différents filtres rendant l'image plus présentable et plus aisément traitable. 
L'image est donc centrée pour que l'utilisateur ne la cherche pas dans des endroits improbables. C'est propre et efficace. 

	\subsection{Les boutons de couleur sur la droite}

On a ici une quatrieme "boite" composé de plein de zone d'entrée. Il y a huit couleurs. Ici, on choisi la hauteur à laquelle on changera une couleur sur la carte en trois dimensions. Par exemple, si on met 10 pour la couleur1, tout ce qui sera en dessous de 10 sera coloré en bleu. Ce qui sera entre la hauteur de couleur1 et de couleur2 sera coloré dans une autre couleur. 
Cela est très important et permet de définir sa carte comme on le souhaite. On la rend à la fois personnalisable et adaptable aux situations. Nous souhaitons dire par là qu'il faut s'adapter à l'échelle. On ne colorie pas une carte de haute montagne avec la meme échelle qu'une carte de vallée. Nous avons pris ça en compte pour fournir à l'utilisateur tout ce dont il a besoin pour visualiser le plus clairement possible le plan qu'il souhaite étudier.

	\subsection{Les boutons de filtre en bas}

Nous avons mis ici différents boutons qui sont en faîtes des filtres. Ce sont les filtres à appliquer à l'image au centre afin de la rendre modelisable dans un plan en trois dimensions. 

	\subsection{D'une fenetre à une interface sophistiquée}
En premier lieu nous avions quelques boutons qui n'étaient capable qu'au mieux d'afficher une unique image au milieu de l'interface graphique. Aujourd'hui nous avons une interface disposant de différentes parties avec en haut les boutons principaux d'ensemble, de type ouverture et édition de fichier ainsi que les crédits et un bouton d'aide. A droite il y a le choix de la hauteur pour les différentes couleurs. Au milieu nous avons la partie d'affichage de la carte. Et en bas nous avons les différents filtres que nous appliquons à la map ainsi que la création du fichier obj nous permettant de modéliser une interface en trois dimensions et nous permettant de nous déplacer à l'interieur.  

\newpage

\chapter{site web}
pour cette deuxieme soutenance, le site web a ete completement repense. Nous avions mis en place tout le squelette de ce dernier pour la premiere soutenance. En effet nous avons tres vite choisi de creer le site web en Html, ce qui ne permettait pas de faire une interface trop esthetique. Nous qvons donc tout mise sur la clarete de l'information. La page de garde nous indique quelles sont nouveautees de l'aventure mapplestore avec un systeme de news, puis trois barres, indiquamt notre progression dans le projet. \\
Une autre page explique avec precision ce au'est exactement Mapplestore et comment l'avons nous implente. nous avons bien sur une page destinee a la presentation du groupe de projet , chaque personne se decrivant brievement et expliquant son role dans le projet. vient ensuite une page ``livre d'or'' permettant a tout utilisateur du projet de donner son avis sur le site et des commentaire des remarques, ou des demandes... Enfin, un dernier bouton permet d'envoyer un mail aux programmeurs pour des questions particulieres.\\
 Ce site ce veut etre une vitrine pour le projet et veut donner envie aux utilisateurs de l'acheter
 \newpage
	\section{Assemblage final du projet}
	



L'assemblage final du projet a été très simple. Nous n'avons pas eu de problème de compatibilité et tout s'est assemblé comme dans un jeu de construction pour enfant. 

Il a fallu relier les boutons de filtres de l'interface aux fonctions codées à coter. 
		
	
\chapter{Pour conclure sur ce projet}

Ce projet nous a à tous beaucoup apporter. Déjà, nous avons créer quelque chose d'utile et de concret. C'est une grosse satisfaction dont nous sommes tous très fier !  De plus, nous avons tous beaucoup appris durant la conception de ce projet. Il a notamment fallu gérer les priorités car le travail à rendre à coté du projet a été très important. Il a fallu s'organiser. Concrétement, nous avons aussi dû comprendre et maîtriser un langage initialement utilisé dans un interpreteur. L'utiliser comme langage de programmation dans le but de développer un logiciel avec une interface graphique pour un utilisateur lambda a démandé un gros travail. 
Dans chacune des parties, il a fallu apprendre à lire les documentations, à se renseigner afin de tout mettre en commun à la fin.

\includegraphics[scale = 0.2]{sleep.jpg}

\end{document}
